package com.mybatis.service;

import com.mybatis.mapper.StudentMapper;
import com.mybatis.entity.Student;
import com.mybatis.entity.StudentVO;
import com.mybatis.util.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;

import java.util.ArrayList;
import java.util.List;


public class StudentService {


    //public static int page = 0;

    public static List<Student> getList() {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> students = mapper.getList();
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义

        return students;
    }

    public static List<StudentVO> getPage(int page) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<StudentVO> students = mapper.getPage(page);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义

        return students;
    }

    public static List<StudentVO> getSearchPage(int page,StudentVO studentVO) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        studentVO.setPage(page);
        List<StudentVO> students = mapper.getSearchPage(studentVO);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义

        return students;
    }
    public static Integer getSize() {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Integer size = mapper.getSize();
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义

        return size;
    }

    public static Integer getSearchSize(StudentVO studentVO) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Integer size = mapper.getSearchSize(studentVO);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义

        return size;
    }

    public static void delete(String sno) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        mapper.delete(sno);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
    }

    public static void insert(Student student) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        mapper.insert(student);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义
    }

    public static Boolean getOne(Student student) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);

        Student student1 = null;
        try {
            student1 = mapper.getOne(student);
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (student1 == null)
            return false;
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义
        return true;
    }


    public static Student getBySno(String sno) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Student student = mapper.getBySno(sno);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义
        return student;
    }

    public static void update(Student student) {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        mapper.update(student);
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义
    }

    public static List[] getComboBox() {
        //这行连接操作不变
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();

        /*  对数据库的操作自定义  */
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<String> byClass = mapper.getByClass();
        List<String> byMajor = mapper.getByMajor();
        List<String> byDepartment = mapper.getByDepartment();
        List[] data = new ArrayList[3];
        data[0] = byClass;
        data[1] = byMajor;
        data[2] = byDepartment;
        /*  以上内容自定义  */

        //这行关闭连接操作不变
        sqlSession.close();
        //返回结果自定义
        return data;
    }

}
